/*!
 * Plugin do jQuery para envio de e-mails com AJAX
 * 
 * @author Renato Lenz Costalima @ PC4Team
 * Date: Wed Apr 06 10:55:29 2011
 */
(function( $ ){
	/**
	 * Adiciona um evento onSubmit no form selecionado
	 * @param destinario - o e-mail do destinatário
	 * @param options - um json com as seguintes opções:
	 * 		url - o endereço do controlador
	 * 		msgbox - o elemento onde a mensagem será exibida
	 * 		success - a mensagem de sucesso
	 * 		error - a mensagem de erro
	 * 		carregando - a mensagem de carregando (pode ser um elemento HTML <img>)
	 * 		titulo - o título no corpo do e-mail
	 * 		assunto - o assunto do e-mail
	 * 		view - a view onde será renderizado o e-mail
	 * 		remetente - o remetente
	 * 		nome - o nome do remetente
	 */
	$.fn.ajaxMail = function (destinatario, options) {
		var config = {
			'url': BASE_URL + 'email/envia',
			'msgbox': this.find('.notification'),
			'success': 'E-mail enviado com sucesso.',
			'error': 'Erro ao enviar e-mail.',
			'carregando': 'Enviando...',
			'titulo': '',
			'assunto': '(sem assunto)',
			'view': '',
			'remetente': 'no-reply@pc4.com.br',
			'nome': ''
		};

		if ( options ) { 
			$.extend( config, options );
		}
		var dados = {
				'destinatario': destinatario,
				'titulo': config.titulo,
				'assunto': config.assunto,
				'view': config.view,
				'remetente': config.remetente,
				'remetenteNome': config.nome
		};
		if (config.msgbox.length == 0) {
			config.msgbox = $('<div/>');
			this.prepend(config.msgbox);
		}
		config.msgbox.classe = config.msgbox.attr('class');
		config.msgbox.hide();

		this.submit(function (e) {
			var form = $(this);
			config.msgbox.show();
			config.msgbox.removeClass();
			config.msgbox.addClass(config.msgbox.classe);
			config.msgbox.html(config.carregando);
			$.post(config.url, ($.param(dados) + '&' + form.serialize()), function (retorno) {
				var classe = (retorno == 0) ? 'error' : 'success';
				config.msgbox.addClass(classe);
				config.msgbox.html(config[classe]);
				form[0].reset();
			}, 'json');
			return false;
		});

		return this;
		
	};
})(jQuery);